Peer-to-peer file sharing and collaboration

ABSTRACT

An example peer-to-peer file sharing and collaboration method includes providing a user of a computing device with access to an electronic file via a sharing application, the electronic file being stored in a memory of the computing device. The method also includes receiving an input from the user indicative of a desire to share the electronic file using the sharing application and via a peer-to-peer communication protocol. The method further includes providing, via the communication protocol, a first transformed file generated by the first computing device based on the electronic file, and receiving, via the communication protocol, a second transformed file generated based on the electronic file. In such a method, the second transformed file is different from the first transformed file.

BACKGROUND

Existing computing devices may be used to generate, store, and modifyelectronic files in a variety of different environments. In someenvironments, such files may be stored on a server or other computingresource in communication with the computing device via a network. Insuch environments, the computing device may access the file via thenetwork, and a user may modify the file with the computing device. Usersof other computing devices may also be granted access to the file viathe network, and in this way, multiple users may collaborate to modifythe file when the respective computing devices are connected to thenetwork. In such environments, the users may be granted access to thefile once various security requirements have been satisfied, and suchsecurity requirements may be facilitated by the network. In somesituations, however, access to the network may not be available. In suchsituations, the users' ability to access and/or modify the electronicfile may be hindered.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanyingfigures. In the figures, the left-most digit(s) of a reference numberidentifies the figure in which the reference number first appears. Thesame reference numbers in different figures indicate similar oridentical items.

FIG. 1 illustrates an example environment for sharing and/orcollaborating on electronic files.

FIG. 2 illustrates another example environment for sharing and/orcollaborating on electronic files, such as with local computing devices.

FIG. 3 illustrates a further example environment for sharing and/orcollaborating on electronic files with the local computing devices ofFIG. 2.

FIG. 4 illustrates another example environment for sharing and/orcollaborating on electronic files with the local computing devices ofFIG. 2.

FIG. 5 illustrates a further example environment for sharing and/orcollaborating on electronic files with the local computing devices ofFIG. 2.

FIG. 6 illustrates a flow diagram of an example process for sharingand/or collaborating on electronic files.

DETAILED DESCRIPTION

Described herein are systems and processes for sharing and/orcollaborating on electronic files, using two or more local computingdevices, via a peer-to-peer communication protocol (e.g., over apeer-to-peer connection) that is separate from a public networkconnection or a private network connection. In various embodiments,users of the computing devices may share such electronic files by way ofa secure sharing application that is active on the computing devices.Once active, the sharing application may provide a user of a firstcomputing device with access to one or more electronic files storedlocally in a memory of the first computing device. The sharingapplication may also provide a user interface, via a display of thedevice, by which the user may consume, review, revise, edit, and/orotherwise modify one or more such electronic files. Additionally, theuser interface of the sharing application may provide one or morecontrols configured to enable sharing of the electronic file via thepeer-to-peer communication protocol. As will be described in furtherdetail below, such a protocol may include, among other things, a nearfield communication (NFC) arrangement, a wireless local area network, awireless personal area network, and/or other like protocol. In someexamples, the protocol may comprise a BLUETOOTH® connection, a NFCconnection, a WiFi connection, an infra-red connection, a visible-lightconnection, a wired connection, an acoustic connection, or othercommunication connections. Such sharing applications and/or peer-to peercommunication protocols may also facilitate secure access,collaboration, and/or sharing of the electronic file between localcomputing devices when connection to a public or private network is notavailable.

In exemplary embodiments, the sharing application may enable componentsof the first computing device to receive various inputs from the user.For example, one of the controls described above may be configured toreceive an input from a user of the first computing device indicative ofthe user's desire to share an electronic file with the second computingdevice via the peer-to-peer communication protocol. In response to suchan input, the first computing device may provide a sharing request tothe second computing device via the peer-to-peer communication protocol.If a user of the second computing device accepts such a request, thefirst computing device may provide one or more packets of information tothe second computing device via the protocol. In such examples, thepacket of information may include, among other things, a firstcompressed, copied, reconfigured, and/or otherwise transformed versionof the original electronic file. For example, the first computing devicemay generate such a transformed file in order to facilitate transfer ofthe file via the peer-to-peer communication protocol.

Upon receiving the packet of information and/or processing thetransformed version of the electronic file with the second computingdevice, the user of the second computing device may begin to consume,edit, revise, and/or otherwise modify the electronic file using thesharing application active on the second computing device. In someexamples, the users of the respective computing devices may collaborateso as to jointly modify the electronic file via the sharing application.In some examples, edits made by one user may be actively pushed and/orotherwise transmitted to the other computing device in response to aninput from the user. Alternatively, in other examples edits made by theusers may be automatically pushed and/or otherwise transmitted to therespective computing devices in real time. In such examples, the timingand/or method of conveying the various edits made by the users may bedetermined based on, among other things, the type and/or configurationof the peer-to-peer communication protocol.

Once such a sharing or collaboration session is terminated, the firstcomputing device may receive a second packet of information via theprotocol, and the second packet of information may include a secondtransformed file generated by the second computing device. The secondtransformed file may be generated based on the original electronic fileand may include each of the edits made by the various users during thesharing or collaboration session. In this way, once the session iscompleted, a modified version of the original electronic file may resideon the first electronic device. Additionally, once the session iscompleted any versions or transformed files residing on the secondcomputing device may be deleted by the sharing application operating onthe second computing device.

Since the various computing devices described herein may communicateand/or otherwise connect with each other via a peer-to-peercommunication protocol that is separate from and/or outside of thenetworks described above, such computing devices may not be hampered byunreliable connectivity to such networks for purposes of transferringand/or sharing of electronic files. Additionally, electronic files maybe transferred and/or shared via the peer-to-peer communication protocolat higher speeds relative to analogous transfers over the externalnetworks described above. Moreover, since the peer-to-peer communicationprotocols described herein are operable within a relatively short rangewith respect to each individual computing device, the methods andprocesses described herein may allow for improved security over similarmethods performed using external networks. As a result, the methods andprocesses described herein may provide technical and use-basedadvantages to the user and to the overall file sharing and collaborationsystem in some situations.

Referring now to FIG. 1, a detailed example of a file sharing andcollaboration system is illustrated and is generally designated 100. Asdepicted, the file sharing system 100 can include at least one network102 to facilitate communication between distributed computing resourcesand multiple client computing devices. The local client computingdevices may also communicate over a local peer-to-peer network as willbe described in more detail. The network 102 may include public networkssuch as the Internet, private networks such as an institutional and/orpersonal intranet, or some combination of private and public networks.The network 102 may also include any type of wired network, wirelessnetwork, or a combination thereof. Further, the wireless network mayinclude, for example, a satellite network, a cellular network (e.g., 3G,4G, etc.), a Wi-Fi network, a WiMax network, another wireless network,or a combination thereof. Moreover, the wired network may include anEthernet connected via Cat-5 cable, twisted pair telephone lines,coaxial cable, fiber optic cable, or a combination thereof. In anotherimplementation, the network 102 may be a wide area network (WAN), alocal area network (LAN), or a combination thereof. Further, the network102 may include a plain-old telephone service (POTS) network.

The network 102 may utilize communications protocols, includingpacket-based and/or datagram-based protocols such as internet protocol(IP), transmission control protocol (TCP), user datagram protocol (UDP),or other types of protocols. Moreover, the network 102 may also includea number of devices that facilitate network communications and/or form ahardware basis for the networks, such as switches, routers, gateways,access points, firewalls, base stations, repeaters, backbone devices,and the like.

In some examples, the network 102 may further include one or moredevices that enable connection to a wireless network, such as a wirelessaccess point (WAP). Additional examples support connectivity throughWAPs that send and receive data over various electromagnetic frequencies(e.g., radio frequencies), including WAPs that support Institute ofElectrical and Electronics Engineers (IEEE) 802.11 standards (e.g.,802.11g, 802.11n, and so forth), and other standards.

As further illustrated in FIG. 1, the file sharing system 100 can alsoinclude a first distributed computing resource 104, a second distributedresource 106, and an Nth distributed resource 108 connected to thenetwork 102. In various examples, the distributed computing resources104, 106, 108 may include one or more computing devices that operate ina cluster or other grouped configuration to share resources, balanceload, increase performance, provide fail-over support or redundancy, orfor other purposes. The distributed computing resources 104, 106, 108may also include computing devices that may belong to a variety ofcategories or classes of devices such as traditional server-typedevices, desktop computer-type devices, mobile-type devices, specialpurpose-type devices, embedded-type devices, and/or wearable-typedevices.

Thus, the distributed computing resources 104, 106, 108 may include adiverse variety of device types and are not limited to a particular typeof device. The distributed computing resources 104, 106, 108 mayrepresent, but are not limited to, desktop computers, server computers,web-server computers, personal computers, mobile computers, laptopcomputers, tablet computers, wearable computers, implanted computingdevices, telecommunication devices, automotive computers, networkenabled televisions, thin clients, terminals, personal data assistants(PDAs), game consoles, gaming devices, work stations, media players,personal video recorders (PVRs), set-top boxes, cameras, integratedcomponents for inclusion in a computing device, appliances, or any othersort of computing device.

FIG. 1 further illustrates the details regarding the Nth distributedcomputing resource 108. It can be appreciated that the first distributedcomputing resource 104 and the second distributed computing resource 106may be configured in substantially the same manner as the Nthdistributed computing resource 108 and can include all or a combinationof any of the components described herein in conjunction with the Nthdistributed computing resource 108.

As shown, the Nth distributed computing resource 108 may be anycomputing device and the Nth distributed computing resource 108 caninclude one or more processing units 110 operably, or electrically,connected to computer-readable media 112, e.g., via a bus 114. The bus114 may include one or more of a system bus, a data bus, an address bus,a PCI bus, a Mini-PCI bus, and any variety of local, peripheral, and/orindependent buses.

The Nth distributed computing resource 108 may also include one or morenetwork interfaces 116 to enable communications between the Nthdistributed computing resource 108 and other computing resources ordevices via the network 102. The network interface 116 may include oneor more network interface controllers (NICs) or other types oftransceiver devices to send and receive communications over a network.In a particular aspect, as illustrated in FIG. 1, executableinstructions can be stored on the computer-readable media 112 and thoseinstructions may include, for example, an operating system 118, a remoteshared folder and file synchronization module 120, and other modules,programs, or applications that are loadable and executable by the one ormore processing units 110.

Alternatively, or in addition, the functionality described herein may beperformed, at least in part, by one or more hardware logic componentssuch as accelerators. For example, and without limitation, illustrativetypes of hardware logic components that may be used includeField-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc. For example, an accelerator may represent a hybrid device,such as one from ZYLEX or ALTERA that includes a CPU core embedded in anFPGA fabric.

The computer-readable media 112 of the Nth distributed computingresource 108 may also include, or be partitioned with, a remote filesystem 122 in which a plurality of folders, sub-folders, files, or acombination thereof may be stored. The plurality of folders,sub-folders, and files can include a plurality of shared folders, sharedsub-folders, shared files, shared sub-level files, and shared shortcuts.More particularly, the plurality of shared folders, shared sub-folders,shared files, shared sub-level files, and shared shortcuts can include aplurality of remote instances of shared folders, a plurality of remoteinstances of shared sub-folders, and a plurality of remote instances ofshared files.

In particular, the remote file system 122 may utilize a cryptographichash function, or other hash function, to store and retrieve files anddata stored within the remote file system 122. The hash function mayinclude a derivative of the Merkle-Damgard hash function such as MD2,MD4, MD5, MD6, SHA-0, SHA-1, SHA-2, SHA-3, or a combination thereof. Inanother aspect, the hash function may include a race integrityprimitives evaluation message digest (RIPEMD) hash function, RIPEMD-160,or a combination thereof.

FIG. 1 further indicates that the computer-readable media 112 caninclude a master hash list 124 stored thereon. The master hash list 124can include a list of folder hashes, sub-folder hashes, and file hashesand may be used to compare a current state of folder hashes, sub-folderhashes, and file hashes thereto in order to determine if the contentwithin the folders, sub-folders, and/or files has changed since the lastmaster hash list was computed and recorded.

For simplicity, other components or features that may be typicallyassociated, or included, with a computing device such as the Nthdistributed computing resource 108 are omitted from the depiction of theNth distributed computing resource 108 in FIG. 1. These other componentsor features may include, but are not limited to, an A/C power supply, aD/C power supply, various connector ports, various cords, various LEDindicators, speakers, a housing, a chassis, fans, heat sinks, inputdevices, output devices, display devices, etc.

FIG. 1 further indicates that the file sharing system 100 can include afirst client computing device 130, a second client computing device 132,and an Nth client computing device 134. The client computing devices130, 132, 134 may belong to a variety of categories or classes ofdevices, which may be the same as or different from the distributedcomputing resources 104, 106, 108. These categories or classes ofdevices may include traditional client-type devices, desktopcomputer-type devices, mobile-type devices, special purpose-typedevices, embedded-type devices, and/or wearable-type devices. Further,the client computing devices 130, 132, 134 may include a diverse varietyof device types and are not limited to any particular type of device.

For example, the client computing devices 130, 132, 134 may alsoinclude, but are not limited to, computer navigation type clientcomputing devices such as satellite-based navigation systems includingglobal positioning system (GPS) devices and other satellite-basednavigation system devices, telecommunication devices such as mobilephones, tablet computers, mobile phone tablet hybrid, personal dataassistants (PDAs), laptop computers, other mobile computers, wearablecomputers, implanted computing devices, desktop computers, personalcomputers, automotive computers, network-enabled televisions, thinclients, terminals, game consoles, gaming devices, work stations, mediaplayers, personal video recorders (PVRs), television set-top boxes,digital video recorders (DVRs), cameras, integrated components forinclusion in a computing device, appliances, or any other sort ofcomputing device configured to receive user input.

Moreover, an entity, such as a user, may be associated with each, orany, of the client computing devices 130, 132, 134. The entity mayinclude a particular user and one or more designees of the user such asan assistant of the user, a supervisor of the user, a spouse of theuser, a parent of the user, and/or another entity to whom the usergrants permission to access the client computing device 130, 132, 134.

Each of the client computing devices 130, 132, 134 may be connectable toa peer-to-peer communication protocol 136 (protocol 136), and theprotocol 136 may enable communication between the respective clientcomputing devices 130, 132, 134. In example embodiments, the protocol136 may comprise one or more of a NFC arrangement, a wireless local areanetwork, a wireless personal area network, and/or other like protocol.In some examples, the protocol 136 may comprise a BLUETOOTH® connection,a NFC connection, a WiFi connection, an infra-red connection, avisible-light connection, a wired connection, an acoustic connection, orother communication connections, some of which may be close-rangeconnections. In such embodiments, the protocol 136 may enablepacket-based and/or datagram-based file sharing and/or transfer. In suchexamples, the protocol 136 may comprise an internet protocol (IP),transmission control protocol (TCP), user datagram protocol (UDP), orother types of protocols. Moreover, the computing devices 130, 132, 134may also include a number of components that facilitate communication,such as communication between two or more of the respective computingdevices 130, 132, 134 via the protocol 136 and without connection to thenetwork 102. For example, two or more of the respective computingdevices 130, 132, 134 may transmit signals, files, and/or packets ofinformation therebetween via the protocol 136.

FIG. 1 further illustrates the details regarding the Nth clientcomputing device 134. It can be appreciated that the first clientcomputing device 130 and the second client computing device 132 may beconfigured in the same manner as the Nth client computing device 134 andmay include all or a combination of any of the components describedherein in conjunction with the Nth client computing device 134.

As depicted, the Nth client computing device 134 may be any computingdevice and the Nth client computing device 134 can include one or moreprocessing units 140 operably, or electrically, connected tocomputer-readable media 142, e.g., via a bus 144. The bus 144 mayinclude one or more of a system bus, a data bus, an address bus, a PCIbus, a Mini-PCI bus, and any variety of local, peripheral, and/orindependent buses.

The Nth client computing device 134 may also include one or more networkinterfaces 146 to enable communications between the Nth client computingdevice 134 and other computing resources or devices via the network 102.The network interface 146 may include one or more network interfacecontrollers (NICs) or other types of transceiver devices to send andreceive communications over a network. In a particular aspect,executable instructions can be stored on the computer-readable media 142of the Nth client computing device 134 and those instructions, asillustrated in FIG. 1, may include, for example, an operating system148, a local shared folder and file synchronization module 150, andother modules, programs, or applications that are loadable andexecutable by the one or more processing units 140.

Alternatively, or in addition, the functionally described herein may beperformed, at least in part, by one or more hardware logic componentssuch as accelerators. For example, and without limitation, illustrativetypes of hardware logic components that may be used includeField-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc. For example, an accelerator may represent a hybrid device,such as one from ZYLEX or ALTERA that includes a CPU course embedded inan FPGA fabric.

The computer-readable media 142 of the Nth client computing device 134may also include, or be partitioned with, a local file system 152 inwhich a plurality of folders, sub-folders, files, or a combinationthereof may be stored. The plurality of folders, sub-folders, and filescan include a plurality of shared folders, shared sub-folders, sharedfiles, shared sub-level files, and shared shortcuts. More particularly,the plurality of shared folders, shared sub-folders, shared files,shared sub-level files, and shared shortcuts can include a plurality oflocal instances of shared folders, a plurality of local instances ofshared sub-folders, and a plurality of local instances of shared files.

In a particular aspect, the local file system 152 may utilize acryptographic hash function, or other hash function, to store andretrieve files and data stored within the local file system 152. Thehash function may include a derivative of the Merkle-Damgard hashfunction such as MD2, MD4, MD5, MD6, SHA-0, SHA-1, SHA-2, SHA-3, or acombination thereof. In another aspect, the hash function may include arace integrity primitives evaluation message digest (RIPEMD) hashfunction, RIPEMD-160, or a combination thereof.

As further illustrated in FIG. 1, the computer-readable media 142 caninclude a master hash list 154 stored thereon. The master hash list 154,as described herein, can include a list of folder hashes, sub-folderhashes, and file hashes and may be used to compare a current state offolder hashes, sub-folder hashes, and file hashes thereto in order todetermine if the content within the folders, sub-folders, and/or fileshas changed since the last master hash list was computed and recorded.

The master hash list 154 can be a copy of the master hash list 124stored within the Nth distributed computing resource 108. At times, themaster hash lists 124, 154 can be identical. However, as folders,sub-folders, files, or a combination thereof are altered at the variousclient computing devices 130, 132, 134, the master hash lists 124, 154may be different before being synchronized with each other.

The computer-readable media 142 can also include a file sharing module156 stored thereon. The file sharing module 156 may be executable by theprocessing unit 140 to assist in transferring, for example, signals,files, and/or packets of information between the respective clientcomputing devices 130, 132, 134 via the protocol 136. For example, thefile sharing module 156 may include one or more file sharingapplications which, when executed by the processing unit 140 may providea user interface on the respective client computing device 130, 132,134. As will be described with respect to FIGS. 2-5 below, the userinterface may be configured to receive input from a user of therespective client computing device 130, 132, 134 indicative of a desireto share a particular electronic file stored in the computer-readablemedia 142.

The file sharing module 156 may also be configured to generate one ormore transformed files in response to such an input. In exampleembodiments, such transformed files may comprise a compressed version ofthe particular electronic file, a converted version of the particularelectronic file, a duplicate version (e.g., a copy) of the particularelectronic file, and the like. The file sharing module 156 may also beconfigured to provide the transformed file for sharing with one or moreadditional client computing devices via the protocol 136. For example,the file sharing module 156 may provide a packet of information forsharing with at least one of the client computing devices 132, 134 viathe protocol 136, and in such examples, the packet of information mayinclude at least the transformed file. In some examples, the transformedfile may be a smaller, more easily transferable file than the particularelectronic file with which it corresponds. Thus, in such embodiments,generating and providing the transformed file for sharing with one ormore additional computing devices may reduce the bandwidth required forand may increase the transfer speed of sharing files between clientcomputing devices 130, 132, 134.

Still referring to FIG. 1, the Nth client computing device 134 can alsoinclude an input device 160, an output device 162, a display device 164,or a combination thereof connected thereto. In particular, the inputdevice 160, the output device 162, and the display device 164 can beconnected to the bus 144. The input device 160, the output device 162,and the display device 164 may provide a user with the ability tocommunicate with the Nth client computing device 134. The input device160 may include a mouse, a keyboard, a microphone, a touch screen, ajoystick, a hand held controller, a light pen, a track ball, a scanner,a graphic tablet, magnetic ink card reader (MICR), an optical characterreader (OCR), a bar code reader, an optical mark reader, or acombination thereof. The output device 162 may include a printer, aspeaker, a haptic device, or a combination thereof. The display device164 may include a screen, a monitor, a projector, or a combinationthereof. In example embodiments, the display device 164 may comprise atouch-sensitive display. Such displays may include, for example, one ormore light sensors, capacitance sensors, or other sensors configured todetect touch input on a surface of the display device 164.

FIG. 1 further indicates that the file sharing system 100 can include adata store 166 connected to the Nth client computing device 134. It canbe appreciated that in an alternative aspect, the shared folder and filelocal synchronization module 150, the local file system 152, the masterhash list 154, the file sharing module 156, or a combination thereof maybe located within the data store 166. In various aspects and examples,the data store 166 includes data storage such as a database, datawarehouse, or other type of structured or unstructured data storage. Insome examples, the data store 166 can include a corpus and/or arelational database with one or more tables, indices, stored procedures,and so forth to enable data access including one or more of hypertextmarkup language (HTML) tables, resource description framework (RDF)tables, web ontology language (OWL) tables, and/or extensible markuplanguage (XML) tables, for example.

The computer-readable media 142 may comprise any memory, computerstorage media, and/or communication media. Computer storage media mayinclude volatile memory, nonvolatile memory, and/or other persistentand/or auxiliary computer storage media, removable and non-removablecomputer storage media implemented in any method or technology forstorage of information such as computer-readable instructions, datastructures, program modules, or other data. Computer-readable media 112,142 may be examples of computer storage media similar to data store 166.

Thus, the computer-readable media 112, 142 and/or data store 166includes tangible and/or physical forms of media included in a deviceand/or hardware component that is part of a device or external to adevice, including but not limited to random-access memory (RAM), staticrandom-access memory (SRAM), dynamic random-access memory (DRAM), phasechange memory (PRAM), read-only memory (ROM), mask read-only memory(MROM), programmable read-only memory (PROM), erasable programmableread-only memory (EPROM), electrically erasable programmable read-onlymemory (EEPROM), flash memory, compact disc read-only memory (CD-ROM),digital versatile disks (DVDs), optical cards or other optical storagemedia, magnetic cassettes, magnetic tape, magnetic disk storage,magnetic cards or other magnetic storage devices or media, solid-statememory devices, storage arrays, network attached storage, storage areanetworks, hosted computer storage or any other storage memory, storagedevice, and/or storage medium that may be used to store and maintaininformation for access by a computing device.

In contrast to computer storage media, communication media may embodycomputer-readable instructions, data structures, program modules, orother data in a modulated data signal, such as a carrier wave, or othertransmission mechanism. As defined herein, computer storage media doesnot include communication media. That is, computer storage media doesnot include communications media consisting solely of a modulated datasignal, a carrier wave, or a propagated signal, per se.

The Nth client computing device 134 may also include one or moreprotocol interfaces 168 to enable communications between the Nth clientcomputing device 134 and other computing resources or devices via theprotocol 136. The protocol interface 168 may include one or moreinterface controllers or other types of transceiver devices to send andreceive communications via the protocol 136. For example, the protocolinterface 168 may comprise one or more short-wavelength UHF radioantennae configured to send and/or receive files, signals, packets,and/or other information via a wireless personal area network and/or viaa wireless local area network. Additionally or alternatively, theprotocol interface 168 may comprise one or more antennae configured togenerate and/or detect a modulated electric field or a modulatedmagnetic field. In such embodiments, the protocol interface 168 may beconfigured to send and/or receive files, signals, packets, and/or otherinformation via NFC.

For simplicity, other components or features that may be typicallyassociated, or included, with a computing device such as the Nth clientcomputing device 134 are omitted from the depiction of the Nth clientcomputing device 134 in FIG. 1. These other components or features mayinclude, but are not limited to, an A/C power supply, a D/C powersupply, various connector ports, various cords, various LED indicators,a housing, a chassis, fans, heat sinks, etc.

The computer-readable storage media 112, 142 and/or data store 166 maybe used to store any number of functional components that are executableby the one or more processing units 110, 140. In many implementations,these functional components comprise instructions or programs that areexecutable by the one or more processing units 110, 140 and that, whenexecuted, implement operational logic for performing the operationsattributed to the file sharing system 100. Functional components of thefile sharing system 100 that may be executed on the one or moreprocessing units 110, 140 for implementing the various functions andfeatures related to sharing various files and facilitating localcollaboration between two or more client computing devices 130, 132,134, as described herein, include the remote shared folder and filesynchronization module 120 within the Nth distributed computing resource108, the local shared folder and file synchronization module 150 withinthe Nth client computing device 134, and the file sharing module 156 oneach of the client computing devices 130, 132, 134.

In an implementation, the various modules 120, 150, 156 may includecomputer-readable instructions that are executable by the processingunits 110, 140 to perform operations related to the sharing,collaboration on, and/or synchronization of shared folders and filesamong several client computing devices 130, 132, 134 and at least onedistributed computing resource 104, 106, 108.

Referring now to FIG. 2, an example environment for sharing files isshown and is generally designated 200. The environment 200 illustratedin FIG. 2 may include one or more of the client computing devices 130,132, 134 described above with respect to FIG. 1. In the environment 200shown in FIG. 2, at least one of the client computing devices 130, 132may be connected to and/or otherwise in communication with the network102. Alternatively, in such an environment 200 one or both of the clientcomputing devices 130, 132 may not be able to connect to and/orotherwise communicate with the network 102 due to various environmentalfactors. For example, such an environment 200 may comprise one or morelocations located remote from and/or otherwise outside of the range ofthe network 102, and in such an environment 200 connectivity to thenetwork 102 may be intermittent and/or not possible. Accordingly, insuch an environment 200 the first client computing device 130 may be atleast temporarily connected to and/or otherwise in communication withthe second client computing device 132 via the peer-to-peercommunication protocol 136. While the first client computing device 130is in communication with the second client computing device 132 via theprotocol 136, the computing devices 130, 132 may be configured to sharefiles, signals, packets, and/or other information via the protocol 136and without connecting to the network 102.

Depending on the type of peer-to-peer protocol 136 utilized in theenvironment 200, connectivity between the first and second clientcomputing devices 130, 132 may be dependent upon the proximity betweenthe client computing devices 130, 132. For example, in embodiments inwhich the protocol 136 comprises a wireless network such as a wirelesslocal area network or a wireless personal area networks, the protocolinterface 168 associated with the first client computing device 130 maycommunicate, bond, and/or pair with the corresponding protocol interface168 associated with the second client computing device 132 when thesecond client computing device 132 is at least partially disposed lessthan first distance from the first client computing device 130. In suchembodiments, the protocol 136 may include a Bluetooth® connection, aWi-Fi connection, an infra-red connection, a visible-light connection, awired connection, an acoustic connection, or other communicationsconnection, and the first distance may be less than approximately 4meters. It is understood that in further embodiments, the first distancemay be greater than approximately 4 meters.

In additional embodiments in which the protocol 136 comprises a NFCconnection, a protocol interface 168 associated with the first clientcomputing device 130 may communicate and/or connect with a correspondingprotocol interface 168 associated with the second client computingdevice 132 when the second client computing device 132 is at leastpartially disposed less than a second distance from the first clientcomputing device 130. In such embodiments, the second distance may beless than approximately 10 centimeters. Alternatively, in furtherembodiments, the second distance may be greater than approximately 10centimeters.

In any of the embodiments described herein, the first or seconddistances described above may form a zone 202 surrounding one or both ofthe client computing devices 130, 132. For example, as shown in FIG. 2the zone 202 may extend a distance D (i.e., either the first distance orthe second distance described above) in every direction from the outersurface of the first client computing device 130. It is understood thatalthough FIG. 2 illustrates a substantially two-dimensional zone 202extending from the first client computing device 130, such a zone 202may also extend a distance D from a top surface and a bottom surface ofthe client computing device 130 (i.e., out of and into the page,respectively). When the second client computing device 132 is brought atleast partially within the zone 202 of the first client computing device130, the protocol interface 168 associated with the first clientcomputing device 130 may communicate and/or connect with a correspondingprotocol interface 168 associated with the second client computingdevice 132.

While a connection is formed between the first and second clientcomputing devices 130, 132 the file sharing module 156 of the firstclient computing device 130 may generate one or more signals 204containing files, signals, packets, and/or other information, and maytransmit such signals 204 to the second client computing device 132 viathe protocol 136 using the protocol interface 168 of the first clientcomputing device 130. Likewise, the second client computing device 132may generate one or more signals 206 containing files, signals, packets,and/or other information, and may transmit such signals 206 to the firstclient computing device 130 via the protocol 136 and using the protocolinterface 168 of the second client computing device 132. FIG. 2illustrates an example packet 208 for discussion purposes.

In example embodiments the packet 208 may include, among other things,one or more electronic files, corresponding transformed files, tokens,and/or other information. For example, the packet 208 may include one ormore transformed files generated by the file sharing module 156 of thefirst client computing device 130, and the transformed file may betransmitted from the first client computing device 130 to the secondclient computing device 132 with, within, and/or otherwise via thepacket 208. In such embodiments, upon receiving the transformed file, afile sharing module 156 of the second client computing device 132 mayopen, decompress, and/or otherwise process the received transformed filesuch that the original electronic file may be presented to a user of thesecond computing device 132.

FIG. 3 illustrates an additional environment 300 of the presentdisclosure in which, for example, the file sharing module 156 of thefirst client computing device 130 has activated a sharing application onthe first client computing device 130. Such a sharing application mayprovide a user of the first client computing device 130 with access toone or more electronic files stored in the computer readable media 142and/or other memory of the first computing device 130. For example,activation of such a sharing application may cause the file sharingmodule 156 to provide and/or otherwise present a user interface 302 viathe display device 164. Such a user interface 302 may include, forexample, a visual representation 304 of at least one electronic file306. In example embodiments, the electronic file 306 may be a particularelectronic file 306 selected from a plurality of electronic files storedin the computer-readable media 142 for sharing with the second clientcomputing device 132. For example, in some embodiments the userinterface 302 may present one or more folders, file trees, databases,and/or other file organization structures from which a user of the firstclient computing device 130 may select the electronic file 306. In someexamples, the visual representation 304 of the file 306 may be displayedvia the display device 164 in response to such selection.

The user interface 302 may also include one or more controls 308, 310,312 configured to receive input from the user and to direct such inputto, for example, the file sharing module 156 and/or the protocolinterface 168. For example, one of the controls may comprise a savecontrol 308 configured to receive an input from the user indicative of adesire to save the file 306 and/or one or more modifications made to thefile 306 to the computer readable media 142. Additionally, when thenetwork interface 146 of the first client computing device 130 is ableto connect to the network 102, the save control 308 may enable the userto save and/or transmit the file 306 to the computer readable media 112of one or more of the distributed computing resources 104, 106, 108.

In addition, one of the controls may comprise an edit control 310configured to receive an input from the user indicative of a desire tomodify and/or otherwise edit the electronic file 306. For example, inresponse to receiving such an input the edit control 310 may provide theuser with a plurality of tools via the user interface 302 configured tomake various modifications to the file 306. Such tools may include, forexample, a cut, paste, draw, delete, and/or other tool configured tomodify text or images. Such tools may also include, for example, akeyboard, a number pad, and/or other tool configured to assist the userin adding further content to the file 306.

A further one of the controls may comprise a share control 312configured to receive an input from the user indicative of a desire toshare the electronic file 306 with the second computing device 132. Forexample, receiving an input from the user via the share control 312 ofthe user interface 302 may cause the file sharing module 156 of thefirst client computing device 130 to generate a signal 314 and toprovide the signal to the second client computing device 132 via theprotocol 136 using the protocol interface 168 of the first clientcomputing device 130.

In example embodiments a file sharing module 156 of the second clientcomputing device 132 may activate a corresponding sharing application onthe second client computing device 132. For example, activation of sucha sharing application may cause the file sharing module 156 of thesecond client computing device 132 to provide and/or otherwise present auser interface 316 via the display device 164. In example embodiments,upon receiving the signal 314 from the first client computing device130, the file sharing module 156 of the second client computing device132 may cause the display device 164 to display a message 318 via theuser interface 316. In example embodiments, the message 318 may comprisea request and/or a notification to a user of the second client computingdevice 132 indicating that the user of the first client computing device130 desires to share the file 306 via the protocol 136.

The user interface 316 may also include one or more controls 320(1),320(2), 320(3) configured to receive input from the user and to directsuch input to, for example, the file sharing module 156 and/or theprotocol interface 168 of the second client computing device 132. Forexample, one of the controls 320(1), 320(2), 320(3) may comprise a savecontrol, an edit control, a share control, and/or any other controlssimilar to those described above with respect to the user interface 302of the first client computing device 130. Additionally or alternatively,at least one of the controls may comprise an accept control 320(1) andanother one of the controls may comprise a decline control 320(2). Suchcontrols may be configured to receiver a user input indicative of adesire to accept a file sharing request received via the signal 314 orto deny such a request. In such embodiments, receiving an input from auser of the second client computing device 132 via either the acceptcontrol 320(1) or the decline control 320(2) may cause the file sharingmodule 156 of the second client computing device 132 to generate asignal 322 and to provide the signal 322 to the first client computingdevice 130 via the protocol 136 using the protocol interface 168 of thesecond client computing device 132. Such a signal 322 may comprise anindication that the user of the second client computing device 132either accepts or declines the request to share electronic file 306. Insome embodiments, receiving such a signal 322 may cause the file sharingmodule 156 of the first client computing device 130 to provide acorresponding message (not shown) to the user of the first clientcomputing device 130 via the user interface 302.

FIG. 4 illustrates a further example environment 400 of the presentdisclosure. The example environment 400 may be representative of anenvironment in which the signal 322 described above with respect to FIG.3 comprises an indication that the user of the second client computingdevice 132 accepts a request to share electronic file 306. In such anenvironment 400, receiving such a signal 322 may cause the file sharingmodule 156 of the first client computing device 130 to generate a signal402 that includes a plurality of information, such as in the form of apacket 404, that may be processed by the file sharing module 156 of thesecond client computing device 132 in order to save the file 306 locallyin a computer-readable media 142 of the second client computing device132 and/or to provide the file 306 to the user of the second clientcomputing device 132 for editing, sharing and/or collaboration. In suchan example embodiments, the packet 404 may comprise a file and/or otherelectronic vehicle for transmitting such information between computingdevices via the protocol 136.

In an example embodiment, receiving such a signal 322 may cause the filesharing module 156 of the first client computing device 130 to generatea transformed file 406. In some examples such a transformed file 406 maycomprise a compressed version of the electronic file 306, a convertedversion of the electronic file 306, a duplicate version (e.g., a copy)of the electronic file 306, and the like. In some examples, thetransformed file 406 may be a smaller, more easily-transferable filethan the full-size electronic file 306 residing on the first clientcomputing device 130. The transformed file 406 may include rich text,plain text, or other components or formats. Thus, generating andproviding the transformed file 406 for sharing with the second clientcomputing device 132 may reduce the bandwidth required for and mayincrease the transfer speed of sharing the file 306 between clientcomputing devices 130, 132 via the protocol 136.

In example embodiments, one or more packets 404 of the presentdisclosure may also include a security token 408. Such a security token408 may uniquely identify the respective client computing device thatgenerates and/or other provides the particular security token 408. Forexample, the security token 408 may include one or more security keys orother information identifying the first client computing device 130 andindicating that the transformed file 406 and/or other informationincluded in the packet 404 originated at the first client computingdevice 130. Such tokens 408 may be useful in embodiments in which one orboth of the files 306, 406 is cryptographically protected. For example,in embodiments in which the token 408 comprises a unique first clientcomputing device identifier, one or more remote distributed computingresources 104, 106, 108 may compare such an identifier with savedidentification information associated with the first client computingdevice 130. Such a comparison may take place, for example, whenconnectivity to the network 102 is available. If the identifier matchesthe saved identification information, the one or more remote distributedcomputing resources 104, 106, 108 may grant the second client computingdevice 132 and/or a user of the second client computing device 132access to the transformed file 406 and/or the original electronic file306. For example, if the identifier matches the saved identificationinformation, the one or more remote distributed computing resources 104,106, 108 may send a signal to the first and/or second client computingdevices 130, 132 indicating that secured access to the transformed file406 and/or the electronic file 306 by the second computing device 132has been approved.

In additional embodiments in which connectivity to the network 102 isnot available, each client computing device 130, 132 may verify theother, for security purposes, before access to the transformed file 406and/or the electronic file 306 by the second client computing device 132is granted. For example, upon receiving a first token 408 from the firstclient computing device 130, the second client computing device 132 maycompare a unique first client computing device identifier included inthe token 408 to identification information associated with the firstclient computing device 130. Such identification information may bestored locally on the second client computing device 132. If theidentifier matches the saved identification information, the secondclient computing device 132 may send a signal to the first clientcomputing device 130 including a second token having a unique securitykey or other second client computing device identifier. Upon receivingthe second token, the first client computing device 130 may compare theunique second client computing device identifier included in the secondtoken to identification information associated with the second clientcomputing device 132. Such identification information may be storedlocally on the first client computing device 130. If the identifier ofthe second token matches the saved identification information, the firstclient computing device 130 may provide the transformed file 406 to thesecond client computing device 132. In further embodiments, thetransformed file 406 may be password-protected, encrypted, and/orotherwise secured. In such embodiments, a user of the second clientcomputing device 132 may not access the transformed file 406 and/or theoriginal electronic file 306 without first entering, for example, apassword, pin, and/or other decryption code via a user interface 410 ofthe second client computing device 132.

In the example environment 400, the file sharing module 156 of thesecond client computing device 132 may receive the packet 404, and oncethe user of the second client computing device 132 gains appropriateaccess to the transformed file 406, the file sharing module 156 mayopen, decompress, and/or otherwise process the transformed file 406 suchthat a visual representation 412 of the original electronic file 306 ispresented to the user via the user interface 410. The file sharingmodule 156 may also present a plurality of additional controls 414(1),414(2), 414(3) to the user via the user interface 410, and in exampleembodiments such controls 414(1), 414(2), 414(3) may enable the user toedit and/or otherwise modify the file 306 via the user interface 410. Inexample embodiments one or more of the controls 414(1), 414(2), 414(3)may be substantially similar to and/or the same as at least one of thecontrols 308, 310, 312 described above.

Further, in some embodiments at least one of the controls 414(1),414(2), 414(3) may enable real-time collaboration between users of thefirst and second client computing devices 130, 132. For example, one ormore of the controls 414(1), 414(2), 414(3) may enable the respectivevisual representations 304, 412 of the file 306 to be displayed via theuser interfaces 302, 410 at the same time. In such examples,modifications to the file 306 made as a result of corresponding edits,revisions, changes, or other collaborative input received from a uservia the first client computing device 130 may appear substantiallysimultaneously, in real time, in the visual representation 412 of thefile 306 presented via the user interface 410. Likewise, modificationsto the file 306 made as a result of corresponding edits, revisions,changes, or other collaborative input received from a user via thesecond client computing device 132 may appear substantiallysimultaneously, in real time, in the visual representation 304 of thefile 306 presented via the user interface 302. In various examples ofthe present disclosure, such modifications may be directed from thesecond client computing device 132 to the first client computing device130 via one or more signals 416 generated by the file sharing module 156of the second client computing device 132. Likewise, such modificationsmay also be directed from the first client computing device 130 to thesecond client computing device 132 via one or more of the signals 402generated by the file sharing module 156 of the first client computingdevice 130.

FIG. 5 illustrates a further environment 500 in which, after the file306 has been shared with and/or modified by a user of the second clientcomputing device 132, the user may enter one or more inputs via one ofthe controls 414(1), 414(2), 414(3) indicative of a desire to terminatea connection between the computing devices 130, 132 and/or otherwiseterminate a sharing or collaboration session between the two computingdevices 130, 132. In such an example, such an input may cause the filesharing module 156 of the second client computing device 132 to generatea signal 502 including information indicative of such a desiredtermination. The signal 502 may be transferred from the file sharingmodule 156 of the second client computing device 132, via the protocol136, to the file sharing module 156 of the first client computing device130. In response to receiving such a signal 502, the file sharing module156 of the first client computing device 130 may generate one or moremessages 504 and may present such messages 504 via the user interface302. In example embodiments, such messages 504 may comprise anindication to the user of the first client computing device 130 and/or arequest to the user of the first client computing device 130 toterminate the sharing or collaboration session.

The user of the first client computing device 130 may accept or declinethe request by providing an input via, for example, one or more controlsof the user interface 302, and an indication of the user's decision toaccept or decline the request may be provided to the second clientcomputing device 132 via a signal 506 generated by the file sharingmodule 156 of the first client computing device 130. In exampleembodiments, if the user of the first client computing device 130accepts termination of the sharing or collaboration session, the filesharing module 156 of the second client computing device 132 maygenerate a packet 508 including, for example, a second transformed file510. In such examples, the second transformed file 510 may be generatedbased on, and may incorporate each of, the modifications to theelectronic file 306 received during the sharing or collaborationsession. Similar to the transformed file 406 described above, the secondtransformed file 510 may comprise a compressed version of the electronicfile 306, a converted version of the electronic file 306, a duplicateversion (e.g., a copy) of the electronic file 306, and the like. In suchexamples, the file sharing module 156 may generate the secondtransformed file 510 by copying the modified file 306, compressing themodified file 306, converting the modified file 306 into a differentfile format, and/or otherwise processing the modified file 306 into asuitable form for transfer in the packet 508 via the protocol 136. Thesecond transformed file 510 may be a smaller, more easily transferablefile than, for example, the full-size modified electronic file 306residing on the second client computing device 132 at the end of thesharing or collaboration session.

Upon receiving the second transformed file 510, the file sharing module156 of the first client computing device 130 may open, decompress,convert, and/or otherwise process the second transformed file 510 togenerate a modified file 306, and the file sharing module 156 may directthe modified file 306 to the data store 166 and/or other portions of thecomputer-readable media 142 for storage therein. Additionally oralternatively, the file sharing module 156 may direct the modified file306 to the computer-readable media 112 of a distributed computingresource 104, 106, 108 via the network 102 when connectivity to thenetwork 102 is available.

As noted above, in some embodiments an initial packet 404 provided bythe first client computing device 130 may include one or more securitytokens 408 including a security key and/or other information uniquelyidentifying the first client computing device 130. As shown in FIG. 5,in some embodiments the second client computing device 132 may generatea signal 512 including the token 408, and may direct the signal 512 to,for example, one or more of the distributed computing resources 104,106, 108 via the network 102 when connectivity to the network 102 isavailable. Upon receiving the token 408, the one or more distributedcomputing resources 104, 106, 108 may compare the security key and/orother information included in the token 408 to stored informationidentifying, for example, the first client computing device 130. If thesecurity key and/or other information included in the token 408 matchesthe stored information, the one or more distributed computing resources104, 106, 108 may verify that it was proper to grant the second clientcomputing device 132 and/or a user of the second client computing device132 access to the original file 306. In such situations, the one or moredistributed computing resources 104, 106, 108 may retroactively grantthe second client computing device 132 and/or a user of the secondclient computing device 132 access to the original file 306.Additionally, in some examples such granted access may be maintained forfuture sharing and/or collaboration sessions between the first andsecond client computing devices 130, 132 and/or particular usersthereof. For example, the one or more distributed computing resources104, 106, 108 may direct a signal 514 to the second client computingdevice 132 indicating that such access has been granted, and may alsodirect a similar signal 516 to the first client computing device 130indicating that such access has been granted.

FIG. 6 illustrates various processes associated with sharing and/orcollaborating on one or more electronic files via a peer-to-peercommunication protocol that is separate from, disconnected from, and/orotherwise outside of the network 102 described above. FIG. 6, forexample, illustrates a flow diagram of an example method 600 of sharingand/or collaborating on one or more electronic files using two or moreclient computing devices. The example method 600 is illustrated as acollection of blocks in a logical flow diagram, which represent asequence of operations, some or all of which can be implemented inhardware, software or a combination thereof. In the context of software,the blocks represent computer-executable instructions stored on one ormore computer-readable media that, when executed by one or moreprocessors, perform the recited operations. Generally,computer-executable instructions include routines, programs, objects,components, data structures and the like that perform particularfunctions or implement particular abstract data types. The order inwhich the operations are described should not be construed as alimitation. Any number of the described blocks can be combined in anyorder and/or in parallel to implement the process, or alternativeprocesses, and not all of the blocks need be executed. For discussionpurposes, the methods herein are described with reference to theframeworks, architectures and environments described in the examplesherein, although the methods may be implemented in a wide variety ofother frameworks, architectures or environments.

The description of the various methods may include certain transitionallanguage and directional language, such as “then,” “next,” “thereafter,”“subsequently,” “returning to,” “continuing to,” “proceeding to,” etc.These words, and other similar words, are simply intended to guide thereader through the graphical illustrations of the methods and are notintended to limit the order in which the method steps depicted in theillustrations may be performed.

Additionally, one or more of the various method steps depicted in FIG. 6may be performed by the one or more of the distributed computingresources 104, 106, 108 (FIG. 1) or the client computing devices 130,132, 134 (FIG. 1) in order to facilitate sharing files stored therein orin a memory device accessible thereto. Such sharing of and/orcollaboration on a particular electronic file may take place in asharing or collaboration session between two or more of the clientcomputing devices 130, 132, 134 described herein via the peer-to-peercommunication protocol 136. In particular, one or more of the variousmethod steps depicted in FIG. 6 may be performed by the remote sharedfolder and file synchronization module 120 (FIG. 1) within thedistributed computing resources 104, 106, 108 (FIG. 1), the local sharedfolder and file synchronization module 150 (FIG. 1) within the clientcomputing device 130, 132, 134 (FIG. 1), the file sharing module 156and/or the protocol interface 168 within the client computing device130, 132, 134, or a combination thereof.

As stated above, FIG. 6 illustrates a flow diagram of an example method600 of sharing and/or collaborating on an electronic file. Beginning at602, the method 600 includes activating a sharing application on thefirst client computing device 130. For example, at 602 the first clientcomputing device 130 may receive a first input from a user of the clientcomputing device 130 indicative of a desire to activate the sharingapplication. Such input may be, for example, one or more gestures orother touch inputs received via the display device 164 or other inputdevices 160 of the first client computing device 130. In exampleembodiments, the display device 164 may comprise a touch-sensitivedisplay of the first client computing device 130. In such embodiments,the display device 164 may direct one or more signals or otherinformation indicative of such an input to the file sharing module 156.

The file sharing module 156 may activate the sharing application on thefirst client computing device 130 in response to the first input, and inexample embodiments, the sharing application may comprise an executableapplication, an executable file sharing engine, and/or other componentof the computer readable media 142 and/or of the file sharing module156. When executed, the sharing application may, for example, providethe user with access to one or more electronic files stored locally inthe computer readable media 142 and/or other memory of the first clientcomputing device 130. In some examples, the sharing application mayprovide a user interface, such as the user interface 302 described abovewith respect to FIG. 3, and may provide a secure environment by whichone or more such electronic files may be shared and/or collaborated onwith a user of one or more additional client computing devices, such asover the peer-to-peer communication protocol 136. For example, thesharing application may provide one or more controls, such as thecontrols 308, 310, 312 described above with respect to FIG. 3,configured to enable sharing of and/or collaboration on one or more ofthe electronic files via the protocol 136.

At 604, the file sharing module 156 may receive a second input from theuser of the first client computing device 130 via at least one of thecontrols 308, 310, 312 provided by the sharing application. In exampleembodiments, the second input may be indicative of a desire to share oneor more of the electronic files stored locally on the first clientcomputing device 130 with at least one additional client computingdevice (e.g., the second client computing device 132). In such examples,the second client computing device 132 may be connectable to the firstclient computing device 130 via the protocol 136 and/or the network 102.In example embodiments, the second client computing device 132 may beconnectable to the first client computing device 130 via the protocol136 by disposing the second client computing device 132 at leastpartially within a zone 202 surrounding the first client computingdevice 130. For example, positioning the second client computing device132 less than a maximum distance D away from the first client computingdevice 130 (e.g., at least partially within the zone 202) may cause thefirst client computing device 130 to automatically connect, sync, pair,bond, and/or otherwise communicate with the second client computingdevice 132. As described above with respect to FIG. 2, the maximumdistance D and the resulting size of the zone 202 may vary depending onthe configuration of the protocol 136.

At 606, the file sharing module 156 may provide a sharing request, viathe protocol 136, at least partially in response to the second inputreceived at 604. In particular, such a sharing request may be providedto the second client computing device 132 via one or more signals 314directed to the second client computing device 132 via the protocol 136.Upon receiving such a sharing request the file sharing module 156 of thesecond client computing device 132 may generate a message 318 inquiringas to whether the user of the second client computing device 132 wouldlike to participate in a sharing or collaboration session with the firstclient computing device 130. At 606, the file sharing module 156 of thesecond client computing device 132 may provide the message 318 to theuser via the user interface 316, and the user may accept or deny therequest via one or more controls 320(1), 320(2), 320(3) of the userinterface 316. The file sharing module 156 of the second clientcomputing device 132 may provide information indicative of the user'sresponse via one or more signals 322, and the file sharing module 156 ofthe first client computing device 130 may receive the user's response tothe sharing request, by way of the information carried by the one ormore signals 322, prior to providing a packet 404 including theelectronic file and/or a transformed file 406 generated based on thefile 306.

If, at 606 the user of the second client computing device 132 acceptsthe request to participate in a sharing or collaboration session withthe first client computing device 130, the file sharing module 156 ofthe first client computing device 130 may generate a first transformedfile 406 based on a corresponding electronic file 306 selected by theuser for sharing. As noted above, the first transformed file 406 may begenerated based on the original electronic file 306. For example, thefile sharing module 156 may generate the first transformed file 406 bycopying the original electronic file 306, compressing the originalelectronic file 306, converting the original electronic file 306 into adifferent file format, and/or otherwise processing the originalelectronic file 306 into a suitable form for transfer in a packet 404 ofinformation via the protocol 136. In example embodiments, the filesharing module 156 of the first client computing device 130 may generatethe first transformed file 406 at least partially in response to thesecond input received from the user at 604. For example, in someembodiments the file sharing module 156 of the first client computingdevice 130 may generate the first transformed file 406 regardless ofwhether the user of the second client computing device 132 accepts therequest to participate in a sharing or collaboration session.

At 608, the file sharing module 156 of the first client computing device130 may provide a first packet 404 of information for sharing with thesecond client computing device 132 via the protocol 136. In exampleembodiments, the first packet 404 of information may include the firsttransformed file 406 and/or the original electronic file 306. In furtherexamples, the first packet 404 of information may also include one ormore security tokens 408 including one or more security keys, or otherinformation uniquely identifying the first client computing device 130and/or a user thereof. Such tokens 408 and/or other information may beutilized to ensure the secure transfer of files and/or informationbetween the various client computing devices 130, 132, 134 describedherein.

In example embodiments, the file sharing module 156 of the first clientcomputing device 130 may generate one or more signals 402 including thefirst packet 404, and may direct such signals 402 to the second clientcomputing device 132 via the protocol 136. Upon receiving the firstpacket 404 the file sharing module 156 of the second client computingdevice 132 may, at 608, open, decompress, and/or otherwise process thefirst transformed file 406 such that the original electronic file 306may be presented to a user of the second computing device 132 via a userinterface 410. In example embodiments, one or more of receiving thefirst packet 404 or opening, decompressing, and/or otherwise processingthe first transformed file 406 may trigger the file sharing module 156of the second client computing device 132 to activate a sharingapplication on the second client computing device 132. In exampleembodiments, the sharing application activated on the second clientcomputing device 132 may be substantially similar to and/or the same asthe sharing application described above with respect to step 602.Alternatively, in other examples the file sharing module 156 of thesecond client computing device 132 may activate such a sharingapplication in response to receiving the sharing request described abovewith respect to step 606.

Once the file 306 is open and/or active on the second client computingdevice 132, the user of the second client computing device 132 may edit,consume, revise, and/or otherwise modify the file 306 via the sharingapplication active on the second client computing device 132.Additionally, the user of the first client computing device 130 may makecontemporaneous edits, revisions, and/or other modifications to theversion of the electronic file 306 residing on the first clientcomputing device 130. For example, at 610 the file sharing module 156 ofthe first client computing device 130 may provide and/or receive one ormore packets of information including edits, revisions, modifications,and/or other collaborative input. In some examples, such as examples inwhich the protocol 136 comprises a NFC connection, edits, revisions,modifications, and/or other collaborative input may be transferred at610 via respective signals and/or packets on a per-transaction basiswhen the first client computing device 130 is connected to the secondclient computing device 132 via the protocol 136. Alternatively, inexamples in which the protocol 136 comprises a BLUETOOTH® connection,edits, revisions, modifications, and/or other collaborative input may betransferred between the first and second client computing devices 130,132 at 610, via respective signals and/or packets, in real time. In suchexamples, edits, revisions and/or other modifications made by the userof the first client computing device 130 may appear substantiallysimultaneously (e.g., in real time) in the visual representation 412 ofthe file 306 being shared with the user of the second client computingdevice 132. Likewise, edits, revisions and/or other modifications madeby the user of the second client computing device 132 may appearsubstantially simultaneously (e.g., in real time) in the visualrepresentation 304 of the file 306 displayed on the first clientcomputing device 130.

At 612, the file sharing module 156 may receive a completion requestindicating that the user of the second client computing device 132desires to terminate the sharing or collaboration session. In someexamples, the user of the second client computing device 132 may providean input via one or more controls 414(1), 414(2), 414(3) of the userinterface 410 indicative of a desire to terminate the sharing ourcollaboration session. The file sharing module 156 of the second clientcomputing device 132 may receive such an input and may, in response,generate one or more signals including information indicating the user'sdesire to terminate the session. Such signals may be directed to thefirst client computing device 130 via the protocol 136. In response toreceiving such signals, the file sharing module 156 of the first clientcomputing device 130 may provide one or more messages 504 to the user ofthe first client computing device 130 indicating that the user of thesecond client computing device 132 wishes to terminate the sessionand/or requesting approval for terminating the session. The user of thefirst client computing device 130 may provide an input accepting ordenying the request, and the file sharing module 156 of the first clientcomputing device 130 may direct one or more signals to the second clientcomputing device 132 indicative of such an input.

In example embodiments, if the user of the first client computing device130 accepts the request to terminate the existing sharing orcollaboration session, the file sharing module 156 of the first clientcomputing device 130 may, at 614, receive a second packet 508 ofinformation via the protocol 136, and the second packet 508 ofinformation may include among other things, a second transformed file510 generated by the file sharing module 156 of the second clientcomputing device 132 based at least partially on the electronic file 306as modified during the sharing or collaboration session. For example,since the second transformed file 510 includes revisions, edits,modifications, and/or other collaborative input made by one or both ofthe users during the sharing or collaboration session, the secondtransformed file 510 may be different from the first transformed fileprovided at 608.

In example embodiments, the file sharing module 156 of the second clientcomputing device 132 may, at 614, generate one or more signals includingthe second packet 508, and may direct such signals to the first clientcomputing device 130 via the protocol 136. Upon receiving the secondpacket 508, the sharing module 156 of the first client computing device130 may open, decompress, and/or otherwise process the secondtransformed file 510 such that the modified electronic file 306 may bestored in computer-readable media 142 of the first client computingdevice 130. Additionally or alternatively, at 614 the file sharingmodule 156 of the first client computing device 130 may direct thesecond transformed file 510 and/or the modified electronic file 306 tothe computer-readable media 112 of one or more distributed computingresources 104, 106, 108 via the network 102 when connectivity to thenetwork 102 is established.

As noted above, the wireless transfer and/or other sharing of electronicfiles between electronic devices is often facilitated via one or morepublic networks, private networks, or some combination of private andpublic networks. Such networks are typically optimized for use inenvironments in which connectivity between various electronic devices inthe network is robust. However, in some environments it may be difficultfor mobile devices and/or other computing devices to reliably connectwith existing networks for the purpose of sharing and/or collaboratingon electronic files. Accordingly, example embodiments of the presentdisclosure enable multiple computing devices to communicate and/orotherwise connect with each other via a peer-to-peer communicationprotocol that is separate from and/or outside of the networks describedabove. By communicating via such a protocol, example computing devicesof the present disclosure may not be reliant upon connectivity to anexternal network for purposes of transferring and/or sharing ofelectronic files between the computing devices, and as a result, theuser experience may be improved. Additionally, the transferring and/orsharing of electronic files via the peer-to-peer communication protocolmay be relatively faster than analogous transfers of the electronicfiles via the external networks described above, thereby furtherimproving the user experience and increasing efficiency. Moreover, sincethe peer-to-peer communication protocols described herein are operablewithin a relatively short range with respect to each individualcomputing device, the methods and processes described herein may allowfor improved security over similar methods performed using externalnetworks. As a result, the methods and processes described herein may bebeneficial in some situations, such as in situations in which theelectronic files being shared and/or transferred include sensitive orconfidential information. The methods and processes described herein mayalso be advantageous in situations in which such electronic files arebeing shared and/or transferred in unsecured locations in which thirdparties may be present.

CONCLUSION

Although the techniques have been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the appended claims are not necessarily limited to the features oracts described. Rather, the features and acts are described as exampleimplementations of such techniques.

The operations of the example processes are illustrated in individualblocks and summarized with reference to those blocks. The processes areillustrated as logical flows of blocks, each block of which mayrepresent one or more operations that may be implemented in hardware,software, or a combination thereof. In the context of software, theoperations represent computer-executable instructions stored on one ormore computer-readable media that, when executed by one or moreprocessors, enable the one or more processors to perform the recitedoperations. Generally, computer-executable instructions includeroutines, programs, objects, modules, components, data structures, andthe like that perform particular functions or implement particularabstract data types. The order in which the operations are described isnot intended to be construed as a limitation, and any number of thedescribed operations may be executed in any order, combined in anyorder, subdivided into multiple sub-operations, and/or executed inparallel to implement the described processes. The described processes,or portions thereof, may be performed by resources associated with oneor more device(s) 104, 106, 108, 130, 132, 134 such as one or moreinternal or external CPUs or GPUs, and/or one or more pieces of hardwarelogic such as FPGAs, DSPs, or other types of accelerators.

All of the methods and processes described above may be embodied in, andfully automated via, software code modules executed by one or moregeneral purpose computers or processors. The code modules may be storedin any type of computer-readable storage medium or other computerstorage device. Some or all of the methods may alternatively be embodiedin specialized computer hardware.

Conditional language such as, among others, “can,” “could,” “might” or“may,” unless specifically stated otherwise, are understood within thecontext to present that certain examples include, while other examplesdo not include, certain features, elements and/or steps. Thus, suchconditional language is not generally intended to imply that certainfeatures, elements and/or steps are in any way required for one or moreexamples or that one or more examples necessarily include logic fordeciding, with or without user input or prompting, whether certainfeatures, elements and/or steps are included or are to be performed inany particular example. Conjunctive language such as the phrase “atleast one of X, Y or Z,” unless specifically stated otherwise, is to beunderstood to present that an item, term, etc. may be either X, Y, or Z,or a combination thereof.

Any routine descriptions, elements or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode that include one or more executable instructions for implementingspecific logical functions or elements in the routine. Alternateimplementations are included within the scope of the examples describedherein in which elements or functions may be deleted, or executed out oforder from that shown or discussed, including substantiallysynchronously or in reverse order, depending on the functionalityinvolved as would be understood by those skilled in the art. It shouldbe emphasized that many variations and modifications may be made to theabove-described examples, the elements of which are to be understood asbeing among other acceptable examples. All such modifications andvariations are intended to be included herein within the scope of thisdisclosure and protected by the following claims.

The invention claimed is:
 1. A method, comprising: receiving a firstinput from a user of a first computing device; activating a documentcollaboration application on the first computing device in response tothe input, the document collaboration application providing the userwith access to an electronic file stored in a memory of the firstcomputing device and providing at least one control configured to enablesharing of the electronic file via a peer-to-peer communicationprotocol; receiving a second input from the user, via the at least onecontrol, to share the electronic file with a second computing deviceconnectable to the first computing device via the peer-to-peercommunication protocol; generating a first transformed file with thedocument collaboration application in response to the second input,wherein the first transformed file is based on the electronic file;sending a first packet of information to the second computing device viathe peer-to-peer communication protocol, the first packet of informationcomprising the first transformed file and a token including a securitykey indicating that the first packet originated from the first computingdevice; determining if the first computing device has access to anetwork in communication with a remote computing resource, wherein thetoken is sent to the remote computing resource if the first computingdevice has access to the network in communication with the remotecomputing resource, and where the token is sent to the second computingdevice if the first computing device does not have access to thenetwork, the second computing device comparing information on the tokento information stored on the second computing device; and receiving asecond packet of information via the peer-to-peer communicationprotocol, the second packet of information comprising a secondtransformed file generated by the second computing device based on atleast one of comments on or edits to the electronic file, wherein thesecond transformed file is different from the first transformed file. 2.The method of claim 1, wherein the peer-to-peer communication protocoloperates over one of a short-wavelength UHF radio wave connection, anear-field communication connection, a wireless local area networkconnection, an infra-red connection, a visible-light connection, a wiredconnection, or an acoustic connection.
 3. The method of claim 1, furthercomprising sending a sharing request, via the peer-to-peer communicationprotocol, at least partially in response to the second input, andreceiving a response to the sharing request prior to sending the firstpacket.
 4. The method of claim 1, further comprising sending a thirdpacket of information via the peer-to-peer communication protocol, andreceiving a fourth packet of information via the peer-to-peercommunication protocol, wherein the third packet of informationcomprises first modifications to the electronic file received from theuser via the first computing device and the fourth packet of informationcomprises second modifications to the electronic file different from thefirst modifications.
 5. The method of claim 1, wherein the firsttransformed file comprises a copy of an additional electronic file or acompressed version of the additional electronic file.
 6. A method,comprising: receiving, using a document collaboration applicationoperating on a first computing device, a first input from a user toshare a first electronic file being stored on the first computingdevice; establishing, via a local network, a peer-to-peer connection inresponse to the first computing device being at least partially within apredefined distance range of a second computing device; providing asharing request, via the peer-to-peer connection, at least partially inresponse to the first input; receiving a response to the sharingrequest; providing the first electronic file to the second computingdevice via the peer-to-peer connection at least partially in response tothe sharing request; receiving a second input comprising changes to thefirst electronic file, wherein the changes to the first electronic fileare shared between the first computing device and the second computingdevice on a per-transaction basis if the peer-to-peer connection uses anear-field communication connection, and changes to the first electronicfile are shared between the first computing device and the secondcomputing device substantially simultaneously if the peer-to-peerconnection uses a short-wavelength UHF radio wave connection; andreceiving, via the peer-to-peer connection, a second electronic file,the second electronic file being based on collaborative input made onthe second computing device and based on the first electronic file. 7.The method of claim 6, wherein the first electronic file comprises acopy of an additional electronic file or a compressed version of theadditional electronic file.
 8. The method of claim 6, the method furthercomprising: displaying a visual representation of the first electronicfile via a display of the first computing device, the second input fromthe user being indicative of first modifications to the electronic file,and providing the first modifications using the sharing application andvia the peer-to-peer connection.
 9. The method of claim 8, furthercomprising receiving second modifications to the electronic file via thepeer-to-peer connection, wherein the second modifications are differentfrom the first modifications.
 10. The method of claim 9, wherein thepeer-to-peer connection comprises a short-wavelength UHF radio waveconnection and the second modifications are entered via the secondcomputing device in communication with the first computing device viathe short-wavelength UHF radio wave connection, the second modificationsbeing displayed via the display in real time with entry of the secondmodifications.
 11. The method of claim 6, further comprising providing atoken with the first electronic file via the peer-to-peer connection,the token including a security key identifying the first computingdevice.
 12. The method of claim 6, further comprising: receivingmodifications to the first electronic file via the peer-to-peerconnection, and providing the first electronic file, including themodifications, to a remote computing resource, wherein the remotecomputing resource is in communication with the electronic device via anetwork outside of the peer-to-peer connection.
 13. A computing device,comprising: one or more computer-readable media including a first filesharing and collaboration module; and a processing unit operably coupledto the computer-readable media, the processing unit adapted to executethe first file sharing and collaboration module, wherein the first filesharing and collaboration module is configured to: receive a first inputfrom the user to share an electronic file via a peer-to-peercommunication protocol, the electronic file being stored in thecomputer-readable media, provide, in response to the first input and viathe peer-to-peer communication protocol, the electronic file to a secondcomputing device, wherein providing the electronic file to the secondcomputing device causes the second computing device to activate a secondfile sharing and collaboration module stored within a memory associatedwith the second computing device; receive a second input comprisingchanges to the electronic file, wherein the changes to the electronicfile are shared between the computing device and the second computingdevice on a per-transaction basis if the peer-to-peer communicationprotocol uses a near-field communication connection, and changes to theelectronic file are shared between the computing device and the secondcomputing device substantially simultaneously if the peer-to-peercommunication protocol uses a short-wavelength UHF radio waveconnection; and receive, via the peer-to-peer communication protocol, arevised file generated from the second computing device, wherein therevised file is different from the electronic file.
 14. The computingdevice of claim 13, further comprising a touch-sensitive display,wherein the input comprises a touch input received via thetouch-sensitive display.
 15. The computing device of claim 14, whereinthe first file sharing module is further configured to provide a userinterface for display on the touch-sensitive display, the user interfaceincluding a plurality of controls configured to receive input from theuser.
 16. The computing device of claim 13, further including a protocolinterface configured to provide a sharing request, via the peer-to-peercommunication protocol, at least partially in response to the input. 17.The computing device of claim 16, wherein: the protocol interface isconfigured to provide the sharing request at least partially in responseto the computing device being disposed within approximately 10centimeters of the second computing device if the peer-to-peercommunication protocol uses a near-field communication connection, andthe protocol interface is configured to provide the sharing request atleast partially in response to the computing device being disposedwithin approximately 4 meters of the second computing device if thepeer-to-peer communication protocol uses a short-wavelength UHF radiowave connection.
 18. The computing device of claim 13, wherein thecomputing device is a smartphone or a tablet.
 19. The computing deviceof claim 13, wherein: access to the electronic file via the peer-to-peercommunication protocol is restricted to the second computing device, andaccess to the revised file via the peer-to-peer communication protocolis restricted to the first computing device.
 20. The computing device ofclaim 13, wherein the electronic file is one electronic file of aplurality of electronic files stored on the computing device, theelectronic files being organized using a master hash list that includesa list of folder hashes, sub-folder hashes, and file hashes and may beused to compare a current state of folder hashes, sub-folder hashes, andfile hashes in order to determine if the content within the folders,sub-folders, and/or files has changed since the master hash list waslast computed and recorded.
 21. A method, comprising: receiving a firstinput from a user of a first computing device; activating a documentcollaboration application on the first computing device in response tothe input, the document collaboration application providing the userwith access to an electronic file stored in a memory of the firstcomputing device and providing at least one control configured to enablesharing of the electronic file via a peer-to-peer communicationprotocol; receiving a second input from the user, via the at least onecontrol, to share the electronic file with a second computing deviceconnectable to the first computing device via the peer-to-peercommunication protocol; generating a first transformed file with thedocument collaboration application in response to the second input,wherein the first transformed file is based on the electronic file;sending a first packet of information to the second computing device viathe peer-to-peer communication protocol, the first packet of informationcomprising the first transformed file and a token including a securitykey indicating that the first packet originated from the first computingdevice; in response to determining that the first computing device hasaccess to a network in communication with a remote computing resource,sending the token to the remote computing resource, the remote computingresource granting the second computing device access to the first packetof information based on a comparison of information on the token toinformation saved at the remote computing resource; and receiving asecond packet of information via the peer-to-peer communicationprotocol, the second packet of information comprising a secondtransformed file generated by the second computing device based on atleast one of comments on or edits to the electronic file, wherein thesecond transformed file is different from the first transformed file andthe electronic file comprises a first electronic file and the secondinput comprises changes to the first electronic file, wherein thechanges to the first electronic file are shared between the firstcomputing device and the second computing device on a per-transactionbasis if the peer-to-peer connection uses a near-field communicationconnection, and changes to the first electronic file are shared betweenthe first computing device and the second computing device substantiallysimultaneously if the peer-to-peer connection uses a short-wavelengthUHF radio wave connection.